/**
 * S3M工具
 */
class S3MService {
  viewer: any;
  constructor(viewer: any){
    this.viewer = viewer;
  };
  // 第一种方式：通过open接口将整个场景打开，这种方法简单易操作且不易出现遗漏图层的情况
  initSceneOpen() {
    const promise = this.viewer.scene.open(
      'http://{s}/realspace/services/3D-NewCBD/rest/realspace',
      undefined,
      {
        subdomains: ['www.supermapol.com'],
      }
    )
    // 或者直接open： 
    // const promise = this.viewer.scene.open('http://www.supermapol.com/realspace/services/3D-jinjiang/rest/realspace')
    return promise;
  }
  // 第二种方式：通过addS3MTilesLayerByScp接口进行添加，该方式的优势是，可以根据自己的需要选择部分图层添加到场景中，提高加载性能，但需要加载多图层的整个场景时，不如scene.open方便
  initS3MTiles() {
    const promise = this.viewer.scene.addS3MTilesLayerByScp(
      'http://localhost:8090/iserver/services/3D-test/rest/realspace/datas/zj/config',
      {
        name: 'base',
        cacheKey: '123456', //三维缓存密钥，由SuperMap iServer设置和获取
      }
    )
    promise.then(function (layer) {
      layer.visible = true
    })
  }
  // 鼠标移动设置为手型
  setMouseTypeWhenMouseMoveHandler(promise:any) {
    const scene = this.viewer.scene;
    const handler = new Cesium.ScreenSpaceEventHandler(scene.canvas); // event事件处理程序
    handler.setInputAction((e) => {
      const currentMoveObj = scene.pick(e.endPosition);
      if (currentMoveObj) {
        // 鼠标滑过模型
        this.viewer.enableCursorStyle = false;
        this.viewer._element.style.cursor = '';
        document.documentElement.style.cursor = 'pointer';
        // document.body.classList.add('draw-cursor') // 设置为自定义的图标
      } else {
        // 鼠标滑过场景
        this.viewer.enableCursorStyle = true;
        document.documentElement.style.cursor = '';
        // document.body.classList.remove('draw-cursor')
      }
    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
  }
}

export default S3MService;